package com.quan.common.core;

import java.util.Map;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.quan.common.bean.PageBean;

/**
 * 公共基础业务接口
 * @author 杨浩泉
 *
 * @param <T>
 */
public interface MyBaseService<T> extends IService<T> {

	/**
	 * 分页查询
	 * @param entity 实体对象
	 * @param pageBean 分页对象
	 * @return
	 */
	public IPage<T> selectPage(T entity, PageBean pageBean) ;
	
	/**
	 * 分页查询，不统计总记录数和总页数
	 * @param entity 实体对象
	 * @param pageBean 分页对象
	 * @param isSearchCount true 不统计总记录数
	 * @return
	 */
	public IPage<T> selectPage(T entity, PageBean pageBean, boolean isSearchCount) ;
	
	/**
	 * 分页查询
	 * @param queryWrapper 条件构造器
	 * @param pageBean 分页对象
	 * @return
	 */
	public IPage<T> selectPage(QueryWrapper<T> queryWrapper, PageBean pageBean) ;
	
	/**
	 * 判断该字段值是否存在
	 * @param column 表列名
	 * @param val 值
	 * @param entity 对应实体
	 * @param queryMaps 条件为Map(key: 表列名, value: 值)
	 * @return
	 */
	public boolean hasExist(String column, Object val, Class<T> entity) ;
	public boolean hasExist(String column, Object val, Class<T> entity, Map<String, Object> queryMaps) ;
	
	/**
	 * 判断该字段值是否存在
	 * @param column 表列名
	 * @param val 值
	 * @param queryMaps 条件为Map(key: 表列名, value: 值)
	 * @param selectColumns 返回的列
	 * @return 实体对象
	 */
	public T hasExist(String column, Object val, Map<String, Object> queryMaps, String...selectColumns) ;
	
}
